An input/output (I/O) device may couple to a processing element on a host computing platform or network device such as a networked server. Typically, the I/O device may read information from or cause information to be written to a queue structure maintained in a cache for the processing element. The queue structure may be a circular queue or ring that includes entries or identifiers to a much larger memory for the host network device. The much larger memory may be a type of off-chip memory (as related to the processing element) such as dynamic random access memory (DRAM) or other types of volatile memory. Buffers associated with the identifiers may be maintained at the memory for the host network device. In some examples, these buffers may include data (e.g., payloads from data packets) received or forwarded by the I/O device.
The amount and rate of data received or forwarded by I/O devices (data throughput) has grown rapidly. Additionally, the number of processing elements coupled to a given I/O device has also grown with the deployment of multi-core processors and the use of virtual machines that may be implemented on one or more cores of these multi-core processors. In order to handle increasing data throughput needs as well increasing numbers of processing elements, the number of buffers utilized by I/O devices has also increased rapidly. The use of higher numbers of buffers requires more identifiers and thus the queue structures maintained in caches for processing elements are increasing in size to accommodate more identifiers.